// 血缘关系  extends
function objectFactory() { // new
    // Person 普通运行一下   apply(p?)
    let obj = {}; // 空的对象->羽翼丰满    js是原型式的面向对象  实例和构造函数之间没有血缘关系  
    // 伪数组arguments  把shift方法借给arguments 用
    var Constructor = [].shift.call(arguments);
    // console.log(arguments,'----------')
    obj.__proto__ = Constructor.prototype;
    var ret = Constructor.apply(obj, arguments);
    return typeof ret === 'object' ? ret || obj : obj;
}

function Person(name, age) { // 编程风格  遵守
    this.name = name;
    this.age = age;
    return null; // 忽略它
    // return {
    //     name,
    //     age,
    //     bb: '11'
    // }
}


// const p = new person('计涛', 19);
// console.log(p.name);
let p = objectFactory(Person, '计涛', 19);  // 引用式赋值
console.log(p.bb);